
package main.old.new_2023.last.month_8;


import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @Description: todo 849. 到最近的人的最大距离
 * 给你一个数组 seats 表示一排座位，其中 seats[i] = 1 代表有人坐在第 i 个座位上，seats[i] = 0 代表座位 i 上是空的（下标从 0 开始）。
 * 至少有一个空座位，且至少有一人已经坐在座位上。
 * 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。
 * 返回他到离他最近的人的最大距离。
 *
 * todo 1207. 独一无二的出现次数
 * 给你一个整数数组 arr，请你帮忙统计数组中每个数的出现次数。
 * 如果每个数的出现次数都是独一无二的，就返回 true；否则返回 false。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0822 {

    //独一无二的出现次数
    public boolean uniqueOccurrences(int[] arr) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int temp:arr){
            if (map.containsKey(temp)){
                map.put(temp,map.get(temp)+1);
            }else {
                map.put(temp,1);
            }
        }
        Set<Integer> keys = map.keySet();
        Set<Integer> values = new HashSet<>();
        for (Integer key:keys){
            if (values.contains(map.get(key))){
                return false;
            }else {
                values.add(map.get(key));
            }
        }
        return true;
    }

    //到最近的人的最大距离
    public int maxDistToClosest(int[] seats) {
        StringBuilder builder = new StringBuilder();
        for (int i:seats){
            builder.append(i);
        }
        String[] zeros = builder.toString().split("1");
        int start = zeros[0].length();
        if (seats[0] != 0){
            start = 0;
        }
        int end = zeros[zeros.length-1].length();
        if (seats[seats.length-1] != 0){
            end = 0;
        }
        int temp = Math.max(start,end);
        for (String zero: zeros){
            int i = (zero.length() + 1) / 2;
            temp = Math.max(temp,i);
        }
        return temp;
    }

}
